// 类的写法1:
class User {
  // 成员属性
  id: number;
  username: string;
  // 构造函数是不能标注的
  constructor(id: number, username: string) {
    console.log('这是构造函数，对类中的属性进行初始化');
    // return 1;
    this.id = id;
    this.username = username;
  }

  postArticle(title: string, content: string) {
    console.log(`${this.username}发表一篇文章:${title}`);
  }

  static getId(id = 0) {
    console.log(id);
    console.log(this);
  }
}

// 类的写法2：
// class User {
//   /**
//    * 当我们设置访问修饰符 public 那么ts会做两件事
//    * 1、给当前类添加同名的成员属性
//    * 2、在类的实例化的时候，会把传入的参数值赋值给对应的成员属性
//    * @param id 
//    * @param username 
//    */
//   constructor(
//     public id: number,
//     public username: string
//   ) {
//     console.log('这是构造函数，对类中的属性进行初始化');
//   }

//   postArticle(title: string, content: string) {
//     console.log(`${this.username}发表一篇文章:${title}`);
//   }
// }

let user = new User(1, 'kkb');
console.log(user);
